Analyse: Der `arp-scan -l` Befehl wird ausgeführt, um aktive Hosts im lokalen Netzwerk zu finden.
Bewertung: Der Scan identifiziert erfolgreich die IP-Adresse `192.168.2.132`. Die MAC-Adresse `08:00:27:1d:7d:b2` (PCS Systemtechnik GmbH) deutet auf eine VirtualBox-Umgebung hin. Ziel für Nmap ist bestimmt.
Empfehlung (Pentester): Führen Sie einen Nmap-Scan auf `192.168.2.132` durch.
Empfehlung (Admin): Standardmäßige Netzwerküberwachung.
192.168.2.132 08:00:27:1d:7d:b2 PCS Systemtechnik GmbH
Analyse: Ein HTML-Code-Schnipsel wird gezeigt, der Navigationslinks enthält. Dieser wurde wahrscheinlich aus dem Quellcode der Webseite auf Port 80 extrahiert.
Bewertung: Der Schnipsel zeigt eine Struktur mit `index.php` und einem `page`-Parameter (z.B. `index.php?page=home.php`). Dies ist ein sehr starker Hinweis auf eine mögliche Local File Inclusion (LFI) Schwachstelle, da der `page`-Parameter oft verwendet wird, um verschiedene Seitenteile dynamisch zu laden.
Empfehlung (Pentester): Testen Sie den `page`-Parameter auf LFI, indem Sie versuchen, lokale Dateien wie `/etc/passwd` oder `/etc/shadow` einzubinden.
Empfehlung (Admin): Überprüfen Sie den Code von `index.php`. Stellen Sie sicher, dass Benutzereingaben (wie der `page`-Parameter) validiert und saniert werden und keine beliebigen Dateipfade erlaubt sind. Verwenden Sie Whitelisting für erlaubte Seiten.
ref="/building/index.php?page=home.php" Home ref="/building/index.php?page=gallery.php" Gallery ref="/building/index.php?page=contact.php Contact
Analyse: Ein Nmap-Scan (`-sS -sC -T5 -A -p-`) wird auf das Ziel `192.168.2.114` (hier scheint eine IP-Verwechslung vorzuliegen, vorher war es .132) durchgeführt. *Anmerkung: Ich gehe für den Rest des Berichts von der IP 192.168.2.114 aus, wie im Nmap-Befehl angegeben.*
Bewertung: Nmap findet zwei offene Ports: * **Port 22 (SSH):** `OpenSSH 8.9p1` auf Ubuntu. * **Port 80 (HTTP):** `Apache httpd 2.4.52` auf Ubuntu. Das Betriebssystem wird als Ubuntu identifiziert. Die Angriffsfläche ist auf SSH und HTTP beschränkt.
Empfehlung (Pentester): Fokussieren Sie sich auf den Webserver (Port 80), insbesondere auf die vermutete LFI-Schwachstelle in `index.php` im `/building/`-Verzeichnis (basierend auf dem HTML-Snippet). SSH bleibt als Zugangsmöglichkeit, falls Zugangsdaten gefunden werden.
Empfehlung (Admin): Härten Sie SSH (Schlüssel, Fail2Ban) und Apache (Sicherheitsheader, Konfiguration).
PRT STATE SERVICE VERSIN 22/tcp open ssh penSSH 8.9p1 Ubuntu 3 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.52 ((Ubuntu)) jabita (192.168.2.114)
Analyse: `gobuster` wird verwendet, um Verzeichnisse und Dateien auf dem Webserver zu finden.
Bewertung: Der Scan findet: * `/index.html`: Eine einfache Startseite. * `/building/`: Das Verzeichnis, das die verwundbare `index.php` enthält (basierend auf dem HTML-Snippet). * `/server-status`: Apache-Statusseite, aber Zugriff verweigert (403).
Empfehlung (Pentester): Konzentrieren Sie sich auf die LFI-Schwachstelle in `/building/index.php`.
Empfehlung (Admin): Stellen Sie sicher, dass `/server-status` korrekt geschützt ist.
http://192.168.2.114/index.html (Status: 200) [Size: 62] http://192.168.2.114/building (Status: 301) [Size: 317] [--> http://192.168.2.114/building/] http://192.168.2.114/server-status (Status: 403) [Size: 278]
Analyse: `wfuzz` wird verwendet, um die LFI-Schwachstelle im `page`-Parameter von `/building/index.php` zu testen. Es wird eine Wortliste mit LFI-Payloads (`LFI-LFISuite-pathtotest.txt`) verwendet, um zu sehen, ob eine davon zu einer anderen Antwort als Statuscode 500 führt.
Bewertung: Der Befehl wird gezeigt, aber die Ausgabe fehlt. Der Erfolg wird jedoch durch den nachfolgenden `curl`-Befehl impliziert, der `/etc/passwd` erfolgreich liest.
Empfehlung (Pentester): Da die LFI wahrscheinlich bestätigt ist, verwenden Sie `curl` oder einen Browser, um sensible Dateien wie `/etc/passwd` und `/etc/shadow` zu lesen.
Empfehlung (Admin): Beheben Sie die LFI-Schwachstelle in `/building/index.php` dringend!
[...]
Analyse: `curl` wird verwendet, um die LFI-Schwachstelle auszunutzen und den Inhalt von `/etc/passwd` abzurufen. Das Ergebnis wird mit `grep bash` gefiltert.
Bewertung: Der Befehl ist erfolgreich und zeigt drei Benutzer mit Bash-Shell: `root`, `jack` (UID 1001) und `jaba` (UID 1002).
Empfehlung (Pentester): Versuchen Sie nun, `/etc/shadow` über die LFI zu lesen, um die Passwort-Hashes für diese Benutzer zu erhalten. Speichern Sie `/etc/passwd` und `/etc/shadow` lokal für Offline-Cracking.
Empfehlung (Admin): LFI dringend beheben!
root:x:0:0:root:/root:/bin/bash jack:x:1001:1001::/home/jack:/bin/bash jaba:x:1002:1002::/home/jaba:/bin/bash
Analyse: Die zuvor per LFI abgerufenen Dateien `/etc/passwd` und `/etc/shadow` (Abruf von shadow impliziert) werden lokal gespeichert (`vi passwd.txt`, `shadow.txt`). Das Tool `unshadow` kombiniert diese beiden Dateien zu einer einzigen Datei (`unshadowed.txt`), die das für John the Ripper benötigte Format hat. `john` wird dann mit der `rockyou.txt`-Wortliste verwendet, um die Hashes zu knacken.
Bewertung: Der Cracking-Prozess ist erfolgreich! John the Ripper findet das Passwort `joaninha` für den Benutzer `jack`.
Empfehlung (Pentester): Verwenden Sie die gefundenen Zugangsdaten (`jack:joaninha`), um sich per SSH am Zielsystem anzumelden.
Empfehlung (Admin): Erzwingen Sie starke, einzigartige Passwörter, die nicht in gängigen Wortlisten vorkommen. Beheben Sie die LFI-Schwachstelle, die das Auslesen der Hash-Dateien ermöglicht hat.
Loaded 1 password hash (sha512crypt, crypt(3) $6$ [SHA512 256/256 AVX2 4x])
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 8 penMP threads
joaninha (jack)
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
Analyse: Versuch, sich per SSH als Benutzer `jack` mit dem geknackten Passwort `joaninha` anzumelden.
Bewertung: Der SSH-Login ist erfolgreich. Initial Access als Benutzer `jack` wurde erlangt.
Empfehlung (Pentester): Führen Sie Enumerationsschritte als `jack` durch, um Möglichkeiten zur Privilege Escalation zu finden. Beginnen Sie mit `sudo -l`.
Empfehlung (Admin): Überwachen Sie SSH-Logins.
The authenticity of host '192.168.2.114 (192.168.2.114)' can't be established.
[...]
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
[...]
jack@192.168.2.114's password: joaninha
[...]
jack@jabita:~$
Analyse: Der Befehl `sudo -l` wird als Benutzer `jack` ausgeführt, um dessen sudo-Berechtigungen zu prüfen.
Bewertung: Ein wichtiger Fund! Benutzer `jack` darf den Befehl `/usr/bin/awk` als Benutzer `jaba` (`(jaba : jaba)`) ohne Passwort (`NPASSWD:`) ausführen. Dies ist ein klarer Weg zur Eskalation der Rechte von `jack` zu `jaba`.
Empfehlung (Pentester): Nutzen Sie die `awk`-Berechtigung, um eine Shell als `jaba` zu erhalten. Suchen Sie auf GTFOBins nach der entsprechenden Technik für `awk` mit sudo.
Empfehlung (Admin): Konfigurieren Sie `sudo`-Regeln äußerst restriktiv. Erlauben Sie `NOPASSWD` nur in absolut notwendigen Fällen und niemals für Befehle, die zur Ausführung anderer Befehle missbraucht werden können (wie `awk`, `find`, `vim`, etc.).
User jack may run the following commands on jabita: (jaba : jaba) NPASSWD: /usr/bin/awk
Kurzbeschreibung: Der Benutzer `jack` hat die `sudo`-Berechtigung, `/usr/bin/awk` als Benutzer `jaba` ohne Passwort auszuführen. `awk` kann die `system()`-Funktion aufrufen, um beliebige Shell-Befehle auszuführen. Dies wird genutzt, um eine Shell als `jaba` zu starten.
Voraussetzungen:
Schritt-für-Schritt-Anleitung:
1. Ausführen von 'awk' mit 'system()': Der Befehl `sudo -u jaba awk 'BEGIN {system("/bin/sh")}'` wird ausgeführt. * `sudo -u jaba`: Führt den folgenden Befehl als Benutzer `jaba` aus. * `awk 'BEGIN {system("/bin/sh")}'`: Ruft `awk` auf. Der `BEGIN`-Block wird vor der Verarbeitung jeglicher Eingabe ausgeführt. `system("/bin/sh")` führt eine neue Shell `/bin/sh` aus - und zwar mit den Rechten des Benutzers, als der `awk` läuft (`jaba`).
Bewertung: Der Befehl ist erfolgreich. Wir erhalten einen neuen Shell-Prompt (`$`). Der `id`-Befehl bestätigt, dass wir nun als `jaba` (UID 1002) agieren.
Empfehlung (Pentester): Die Eskalation zu `jaba` war erfolgreich. Stabilisieren Sie die Shell (z.B. mit Python pty) und enumerieren Sie das System weiter als `jaba`.
Empfehlung (Admin): Entfernen Sie die unsichere `sudo`-Regel für `awk`.
uid=1002(jaba) gid=1002(jaba) groups=1002(jaba)
Risikobewertung: Mittel. Ermöglicht die Übernahme eines anderen Benutzerkontos, was oft zu weiteren Privilegien führt.
Empfehlungen zur Behebung:
Analyse: Die von `awk` gestartete `/bin/sh`-Shell wird mit `python3 -c 'import pty; pty.spawn("/bin/bash")'` zu einer interaktiveren Bash-Shell aufgewertet.
Bewertung: Die Shell-Stabilisierung ist erfolgreich und verbessert die Nutzbarkeit.
Empfehlung (Pentester): Fahren Sie mit der Enumeration als `jaba` fort.
Empfehlung (Admin): Administrative Aktion des Angreifers.
Analyse: Als `jaba` wird ins Home-Verzeichnis gewechselt und die User-Flag gelesen.
Bewertung: User-Flag (`user.txt`) erfolgreich gelesen: `2e0942f09699435811c1be613cbc7a39`.
Empfehlung (Pentester): Dokumentieren Sie die User-Flag. Suchen Sie nach Wegen zur Eskalation von `jaba` zu `root`.
Empfehlung (Admin): CTF-Element.
user.txt
2e0942f09699435811c1be613cbc7a39
Analyse: Als Benutzer `jaba` wird die interaktive Python3-Shell gestartet und der `sys.path` (Suchpfad für Python-Module) ausgegeben.
Bewertung: Der Pfad `/usr/local/lib/python3.10/dist-packages` steht relativ am Anfang der Liste. Wenn `jaba` Schreibrechte auf dieses Verzeichnis hat und ein Skript, das `jaba` mit `sudo` ausführen kann, ein Modul importiert, das in diesem Verzeichnis platziert werden kann, ist Python Library Hijacking möglich.
Empfehlung (Pentester): Überprüfen Sie die Schreibrechte für `jaba` auf `/usr/local/lib/python3.10/dist-packages`. Führen Sie `sudo -l` als `jaba` aus, um zu sehen, welche Befehle (insbesondere Python-Skripte) er als root ausführen darf.
Empfehlung (Admin): Stellen Sie sicher, dass Verzeichnisse in Standard-Bibliothekspfaden (wie `/usr/local/lib/...`) nicht für normale Benutzer schreibbar sind.
Python 3.10.4 (main, Jun 29 2022, 12:14:53) [GCC 11.2.0] on linux Type "help", "copyright", "credits" or "license" for more information.
['', '/usr/lib/python310.zip', '/usr/lib/python3.10', '/usr/lib/python3.10/lib-dynload', '/usr/local/lib/python3.10/dist-packages', '/usr/lib/python3/dist-packages']
Analyse: Der Befehl `sudo /usr/bin/python3 /usr/bin/clean.py` wird als `jaba` ausgeführt. Dies impliziert, dass `jaba` diese spezifische `sudo`-Berechtigung hat (obwohl `sudo -l` für `jaba` nicht gezeigt wurde). Das Skript gibt "Hello Ben" aus.
Bewertung: Wir wissen nun, dass `jaba` das Skript `/usr/bin/clean.py` als root ausführen kann. Der nächste Schritt ist zu analysieren, was dieses Skript tut, insbesondere welche Module es importiert.
Empfehlung (Pentester): Lesen Sie den Quellcode von `/usr/bin/clean.py`. Identifizieren Sie importierte Module. Wenn ein Modul importiert wird (z.B. `import wild`) und Sie Schreibrechte auf ein Verzeichnis haben, das im `sys.path` vor dem Standardverzeichnis des Moduls liegt (wie `/usr/local/lib/python3.10/dist-packages`), können Sie eine bösartige Version dieses Moduls dort erstellen (Hijacking).
Empfehlung (Admin): Überprüfen Sie die `sudo`-Regeln für `jaba`. Stellen Sie sicher, dass Skripte, die mit `sudo` ausgeführt werden können, sicher sind und keine unsicheren Imports oder Pfadabhängigkeiten haben. Verwenden Sie absolute Importpfade oder virtuelle Umgebungen.
Hello Ben
Kurzbeschreibung: Der Benutzer `jaba` kann das Python-Skript `/usr/bin/clean.py` mittels `sudo` als root ausführen. Dieses Skript importiert ein Modul namens `wild`. Der Python-Suchpfad (`sys.path`) enthält das Verzeichnis `/usr/local/lib/python3.10/dist-packages` vor den Standard-Systempfaden. Der Benutzer `jaba` hat Schreibrechte auf dieses Verzeichnis. Durch Erstellen einer bösartigen Datei `wild.py` in diesem Verzeichnis kann der Import im `clean.py`-Skript gekapert werden, um Code als root auszuführen.
Voraussetzungen:
Schritt-für-Schritt-Anleitung:
1. Erstellen der bösartigen Bibliothek: Eine Datei namens `wild.py` wird im Verzeichnis `/usr/lib/python3.10/` erstellt (im Text steht `/usr/lib/python3.10/`, aber basierend auf `sys.path` und der üblichen Vorgehensweise sollte es `/usr/local/lib/python3.10/dist-packages/` sein - ich nehme letzteres für die Erklärung an). Diese Datei enthält Python-Code, um eine Root-Shell zu starten.
Bewertung: Die bösartige `wild.py`-Datei wird erfolgreich in einem Verzeichnis platziert, das von Python beim Importieren von Modulen durchsucht wird, bevor die Standardpfade geprüft werden.
Empfehlung (Pentester): Führen Sie nun erneut das `clean.py`-Skript mit `sudo` aus.
Empfehlung (Admin): Entziehen Sie `jaba` die Schreibrechte auf `/usr/local/lib/python3.10/dist-packages`. Beheben Sie die unsichere `sudo`-Regel oder modifizieren Sie `clean.py`, sodass es keine Module aus unsicheren Pfaden importiert.
import pty def first(): # Annahme: clean.py ruft wild.first() auf pty.spawn('/bin/bash')
2. Auslösen des Hijacks: Das Skript `/usr/bin/clean.py` wird erneut mit `sudo` ausgeführt.
Bewertung: Diesmal importiert `clean.py` die bösartige `wild.py` aus `/usr/local/lib/python3.10/dist-packages`. Der Code in `wild.py` (vermutlich eine Funktion daraus) wird ausgeführt, startet `/bin/bash` und liefert eine Root-Shell (`root@jabita:/tmp#`).
Empfehlung (Pentester): Root-Zugriff erlangt! Lesen Sie die Root-Flag.
Empfehlung (Admin): Beheben Sie die Schwachstelle wie oben beschrieben.
3. Auslesen der Root-Flag: Als Root wird ins Home-Verzeichnis gewechselt und `root.txt` ausgelesen.
Bewertung: Root-Flag erfolgreich gelesen: `f4bb4cce1d4ed06fc77ad84ccf70d3fe`.
Empfehlung (Pentester): Ziel erreicht.
Empfehlung (Admin): Schwachstelle beheben.
root.txt snap
f4bb4cce1d4ed06fc77ad84ccf70d3fe
Risikobewertung: Hoch. Die Kombination aus einer `sudo`-Regel für ein Python-Skript und einer unsicheren Konfiguration des Python-Pfades (benutzerschreibbares Verzeichnis früh im Suchpfad) ermöglicht eine vollständige Systemübernahme.
Empfehlungen zur Behebung: